package simpledb.optimizer;

import java.util.List;

/**
 * 该类由 {@link JoinOptimizer#computeCostAndCardOfSubplan} 方法返回，
 * 用于表示某个子查询计划（subplan）的最优执行方案的代价（cost）和基数（cardinality）。
 *
 * 它是连接优化器中非常关键的一个数据结构，用于记录每个可能连接顺序的成本和结果行数，
 * 帮助选择整体代价最小的连接顺序。
 */
public class CostCard {

    /**
     * 最优子计划的执行代价（cost）
     * 通常是以 I/O 操作次数或 CPU 成本估算的总开销。
     */
    public double                cost;

    /**
     * 最优子计划的结果集行数（cardinality）
     * 表示该子计划执行后输出的元组数量估计值。
     */
    public int                   card;

    /**
     * 当前最优的连接计划，由一组 LogicalJoinNode 组成。
     * 每个 LogicalJoinNode 表示一次两个表之间的连接操作。
     */
    public List<LogicalJoinNode> plan;
}
